IntroductionLes connexions TCP constituent la couche transport de base d'Internet. Chaque fois que votre navigateur Web se connecte à un serveur et demande une nouvelle page, il ouvre une connexion TCP pour traiter la demande au serveur ainsi que la réponse de celui-ci. L'objet JavaScript Socket vous permet de vous connecter à tout serveur sur Internet et d'échanger des données avec ce serveur. L'objet Socket fournit la fonctionnalité de base pour se connecter à un serveur distant par le biais d'un réseau TCP/IP ou d'Internet. Il fournit des appels tels que open() et close() afin d'établir ou de mettre fin à une connexion, ou encore read() ou write() pour transférer des données. Cet objet contient également une méthode listen() qui permet d'établir un serveur Internet simple, lequel utilise la méthode poll() pour vérifier la présence de connexions entrantes. Un grand nombre de ces connexions reposent sur un simple échange de données ASCII, tandis que d'autres protocoles plus complexes, tels que le protocole FTP, concernent les données binaires. L'un des protocoles les plus simples est le protocole HTTP. L'exemple de client TCP/IP suivant se connecte à un serveur WWW (qui écoute sur le port 80) ; il envoie ensuite une demande GET HTTP très simple afin d'obtenir la page d'accueil du serveur, puis lit la réponse, constituée de la page d'accueil et d'un en-tête de réponse HTTP. reply = ""; conn = new Socket; // accède à la page d'accueil Adobe if (conn.open ("www.adobe.com:80")) { // envoie une demande GET HTTP conn.write ("GET /index.html HTTP/1.0\n\n"); // et lit la réponse du serveur reply = conn.read(); conn.close(); } Une fois le code ci-dessus exécuté, la variable homepage contient le contenu de la page d'accueil Adobe et un en-tête de réponse HTTP. L'établissement d'un serveur Internet est un peu plus compliqué. Un programme serveur type attend les connexions entrantes et les traite lorsqu'elles arrivent. En général, vous ne souhaiteriez pas que votre application s'exécute dans une boucle sans fin, dans l'attente de toute demande de connexion entrante. Aussi, vous avez la possibilité de demander un objet Socket pour une connexion entrante en appelant la méthode poll() d'un objet Socket. Cet appel ne fait que vérifier les connexions entrantes, puis revient immédiatement. En présence d'une demande de connexion, l'appel de poll() renvoie un autre objet Socket contenant la toute nouvelle connexion. Utilisez cet objet de connexion pour dialoguer avec le client appelant ; une fois cela fait, fermez la connexion et supprimez l'objet de connexion. Pour qu'un objet Socket puisse vérifier la présence de connexions entrantes, un port d'écoute précis doit lui être indiqué, comme le port 80 pour les demandes HTTP, par exemple. Pour ce faire, appelez la méthode listen() à la place de la méthode open(). L'exemple suivant correspond à un serveur Web très simple. Le serveur écoute sur le port 80 et attend afin de détecter toute demande entrante. L'en-tête HTTP est supprimé et une page HTML fictive est transmise à l'appelant. conn = new Socket; // écoute sur le port 80 if conn.listen (80)) { // attend indéfiniment une connexion var incoming; do incoming = conn.poll(); while (incoming == null); // supprime la demande read(); // Répond avec un en-tête HTTP incoming.writeln ("HTTP/1.0 200 OK"); incoming.writeln ("Type de contenu: texte/html"); incoming.writeln(); // Transmet une page d'accueil fictive incoming.writeln ("<html><body><h1>Page d'accueil</h1></body></html>"); // terminé ! incoming.close(); delete incoming; } Il est fréquent que le point final distant mette fin à la connexion, une fois les données transmises. Pour cette raison, une propriété connected contient true tant que la connexion existe. Si la propriété connected renvoie la valeur false, la connexion est fermée automatiquement. En cas d'erreur, la propriété error de l'objet Socket contient un court message décrivant le type de l'erreur. L'objet Socket permet de mettre en oeuvre facilement des logiciels communiquant entre eux par Internet. Par exemple, vous pouvez laisser deux applications Adobe échanger des documents et des données simplement en écrivant et en exécutant des programmes JavaScript. |